import BaseModel from './BaseModel'
import API from '@/api/apis'
import { DateFormat } from 'yb-tool'
import Filters from "../../utils/filters";

/**
 * 作品模型
 */
class ProductModel extends BaseModel {
  // 构造方法
  constructor() {
    super()
    /**
     * 产品名称
     * @type {string}
     */
    this.name = ''
    /**
     * 产品图片
     * @type {string}
     */
    this.cover = ''
    /**
     * 产品版本
     * @type {string}
     */
    this.version = ''
    /**
     * 产品类型
     * @type {string}
     */
    this.type = ''
    /**
     * 产品内容
     * @type {string}
     */
    this.content = ''
    /**
     * 产品描述
     * @type {string}
     */
    this.describe = ''
    /**
     * 产品链接
     * @type {string}
     */
    this.url = ''
    /**
     * 产品开始时间
     * @type {string}
     */
    this.startDate = ''
    this.startDateStr = ''
    /**
     * 产品结束时间
     * @type {string}
     */
    this.endDate = ''
    this.endDateStr = ''
    /**
     * 是否显示在我的里面
     * @type {boolean}
     */
    this.isShow = false
    /**
     * 开始结束时间字符串
     * @type {string}
     */
    this.strtAndEndTime = ''

    /**
     * ====================== URL 相关 ====================================
     */
    /**
     * 获取详情数据的URL
     * @type {String}
     */
    this.detailUrl = API.production.detail
    /**
     * 删除数据的URL
     * @type {String}
     */
    this.removeUrl = API.production.remove
    /**
     * 添加数据的URL
     * @type {String}
     */
    this.addUrl = API.production.add
    /**
     * 更新数据的URL
     * @type {String}
     */
    this.updateUrl = API.production.update
    /**
     * 添到回收站的URL
     * @type {String}
     */
    this.dustbinPushUrl = API.production.dustbinPush
    /**
     * 回收站还原的URL
     * @type {String}
     */
    this.dustbinPopUrl = API.production.dustbinPop
    /**
     * 添加修改数据的KEY数组
     * @type {Array}
     */
    this.addOrUpdateKeyArr = ['name', 'cover', 'version', 'type', 'content', 'describe', 'url', 'startDate', 'endDate', 'isShow']
  }

  /* ----- 获取指定图片大小 -------*/
  /**
   * 手机端我的界面图片
   * @returns {*|string}
   */
  get mMeCover() {
    return Filters.imageFill(this.cover, 3.2, 3.2, 'rem')
  }

  /**
   * 手机端作品列表
   * @returns {*|string}
   */
  get mMeListCover() {
    return Filters.imageFill(this.cover, 1.6, 1.6, 'rem')
  }

  /**
   * PC端我的界面图片
   * @returns {*|string}
   */
  get pcMeCover() {
    return Filters.imageFill(this.cover, 130, 130)
  }

  /**
   * PC端作品列表
   * @returns {*|string}
   */
  get pcMeListCover() {
    return Filters.imageFill(this.cover, 100, 100)
  }

  /**
   * 重写父类方法，拦截设置数据
   * @param json 要设置的数据
   */
  setDataWithJson(json) {
    super.setDataWithJson(json)
    const startTimeStr = DateFormat(new Date(this.startDate), 'YYYY-MM-DD')
    this.startDateStr = startTimeStr
    const endTimeStr = DateFormat(new Date(this.endDate), 'YYYY-MM-DD')
    this.endDateStr = endTimeStr
    this.strtAndEndTime = `${startTimeStr} - ${endTimeStr}`
  }
}

/**
 * 列表加载URL
 * @type {String}
 */
ProductModel.listUrl = API.production.all
/**
 * 不同类型的URL
 * @type {String}
 */
ProductModel.typesUrl = API.production.typeDistinct
/**
 * 获取所有回收站数据
 * @type {String}
 */
ProductModel.dustbinAllUrl = API.production.dustbinAll

export default ProductModel
